class Solution {
    TreeNode pre = null;
    public void flatten(TreeNode root) {
        work(root);
    }
    public void work(TreeNode root) {
        if(root == null)
            return;
        /*
            root 为 前序遍历, 即[1,2,3,4],而pre表示[null,1,2,3]
            所以让pre.left = null, pre.right = root即可
            但是注意的是遍历到这里时 root.right还没有遍历 不能直接更新root.right
            所以要额外遍历记录root.right即可
         */
        //System.out.println(root.val+" "+ (pre==null ? -1 : pre.val));
        TreeNode bokRight = root.right;
        if(pre!=null){
            pre.left = null;
            pre.right = root;
        }
        pre = root;

        work(root.left);

        work(bokRight);
    }
}